/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GUI.GerenciarTREF;

import Biblioteca.Library;
import Biblioteca.VerificaErros;
import ClassesListas.Jogos;
import ClassesListas.Pessoas;
import ClassesListas.SubFases;
import ClassesUnicas.ComboBoxMultiData;
import java.util.ArrayList;
import javax.swing.JFormattedTextField;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.table.DefaultTableModel;

/**
 * FrameDefault
 *
 * Versao 1.0
 *
 * Data 16/02/2013
 *
 * @author Igor
 */
public class FrameMatrizConfusaoJogador extends FramePattern implements InterfaceFrame {
    //Atributos
     private Jogos jogos;
    
    /**
     * Creates new form FrameDefault
     */
    public FrameMatrizConfusaoJogador() {
        initComponents();

        //Library.reagirEnter(buttonNovo);
        Library.reagirEnter(buttonSalvar);
        Library.reagirEnter(buttonLimpar);
        Library.reagirEnter(buttonFechar);

        radioGroupButtonTipoMatrizConfusao.add(radioButtonExpressoes);
        radioGroupButtonTipoMatrizConfusao.add(radioButtonImagens);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        radioGroupButtonTipoMatrizConfusao = new javax.swing.ButtonGroup();
        panelTitulo = new javax.swing.JPanel();
        labelTitulo = new javax.swing.JLabel();
        labelCamposObrigatorios = new javax.swing.JLabel();
        panelBotoes = new javax.swing.JPanel();
        buttonSalvar = new javax.swing.JButton();
        buttonLimpar = new javax.swing.JButton();
        buttonFechar = new javax.swing.JButton();
        jTabbedPane1 = new javax.swing.JTabbedPane();
        panelFiltros = new javax.swing.JPanel();
        labelJogos = new javax.swing.JLabel();
        jScrollPane2 = new javax.swing.JScrollPane();
        tableJogos = new javax.swing.JTable();
        comboBoxSubFases = new javax.swing.JComboBox();
        labelSubFaseIntensidade = new javax.swing.JLabel();
        labelTexto2 = new javax.swing.JLabel();
        labelTexto3 = new javax.swing.JLabel();
        panelRadioButtons = new javax.swing.JPanel();
        radioButtonExpressoes = new javax.swing.JRadioButton();
        radioButtonImagens = new javax.swing.JRadioButton();
        labelTexto5 = new javax.swing.JLabel();
        comboBoxPaciente = new javax.swing.JComboBox();
        jLabel2 = new javax.swing.JLabel();
        labelTexto8 = new javax.swing.JLabel();

        setClosable(true);
        setIconifiable(true);
        setTitle("Matriz de Confusão por Jogador");
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentShown(java.awt.event.ComponentEvent evt) {
                formComponentShown(evt);
            }
        });

        panelTitulo.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

        labelTitulo.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        labelTitulo.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        labelTitulo.setText("Tela utilizada para visualizar as matrizes de confusão por jogador");

        labelCamposObrigatorios.setText("Campos marcados com * são obrigatórios");

        javax.swing.GroupLayout panelTituloLayout = new javax.swing.GroupLayout(panelTitulo);
        panelTitulo.setLayout(panelTituloLayout);
        panelTituloLayout.setHorizontalGroup(
            panelTituloLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelTituloLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelTituloLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(labelTitulo)
                    .addComponent(labelCamposObrigatorios))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        panelTituloLayout.setVerticalGroup(
            panelTituloLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelTituloLayout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(labelTitulo)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelCamposObrigatorios))
        );

        panelBotoes.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

        buttonSalvar.setText("Gerar Matriz");
        buttonSalvar.setToolTipText("Clique para salvar os dados digitados");
        buttonSalvar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonSalvarActionPerformed(evt);
            }
        });

        buttonLimpar.setText("Limpar");
        buttonLimpar.setToolTipText("Clique para limpar a tela e habilitar um novo registro");
        buttonLimpar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonLimparActionPerformed(evt);
            }
        });

        buttonFechar.setText("Fechar");
        buttonFechar.setToolTipText("Cancela a operação e fecha a janela");
        buttonFechar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonFecharActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout panelBotoesLayout = new javax.swing.GroupLayout(panelBotoes);
        panelBotoes.setLayout(panelBotoesLayout);
        panelBotoesLayout.setHorizontalGroup(
            panelBotoesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelBotoesLayout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(buttonSalvar)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(buttonLimpar)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(buttonFechar)
                .addContainerGap())
        );

        panelBotoesLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonFechar, buttonLimpar, buttonSalvar});

        panelBotoesLayout.setVerticalGroup(
            panelBotoesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelBotoesLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelBotoesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(buttonLimpar)
                    .addComponent(buttonSalvar)
                    .addComponent(buttonFechar))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        panelFiltros.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 0, 12), java.awt.Color.black)); // NOI18N

        labelJogos.setText("Jogos:");

        tableJogos.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Título 1"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPane2.setViewportView(tableJogos);

        comboBoxSubFases.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "<Escolha um item>" }));
        comboBoxSubFases.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                comboBoxSubFasesItemStateChanged(evt);
            }
        });

        labelSubFaseIntensidade.setText("SubFase - Intensidade:");

        labelTexto2.setFont(new java.awt.Font("Tahoma", 2, 13)); // NOI18N
        labelTexto2.setText("*Os jogos serão apresentados após a seleção de um jogador;");

        labelTexto3.setFont(new java.awt.Font("Tahoma", 2, 13)); // NOI18N
        labelTexto3.setText("*Na matriz de confusão gerada, a coluna 'Descrição' representa a expressão real.");

        panelRadioButtons.setBorder(javax.swing.BorderFactory.createTitledBorder("   Tipo Matriz Confusão   "));

        radioButtonExpressoes.setText("Expressões");

        radioButtonImagens.setText("Imagens");

        javax.swing.GroupLayout panelRadioButtonsLayout = new javax.swing.GroupLayout(panelRadioButtons);
        panelRadioButtons.setLayout(panelRadioButtonsLayout);
        panelRadioButtonsLayout.setHorizontalGroup(
            panelRadioButtonsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelRadioButtonsLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelRadioButtonsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(radioButtonExpressoes)
                    .addComponent(radioButtonImagens))
                .addContainerGap(292, Short.MAX_VALUE))
        );
        panelRadioButtonsLayout.setVerticalGroup(
            panelRadioButtonsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelRadioButtonsLayout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(radioButtonExpressoes)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(radioButtonImagens)
                .addGap(30, 30, 30))
        );

        labelTexto5.setFont(new java.awt.Font("Tahoma", 2, 13)); // NOI18N
        labelTexto5.setText("*Seleciona um paciente jogador na opção 'Paciente';");

        comboBoxPaciente.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "<Escolha um paciente>" }));
        comboBoxPaciente.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                comboBoxPacienteItemStateChanged(evt);
            }
        });

        jLabel2.setText("Paciente:");

        labelTexto8.setFont(new java.awt.Font("Tahoma", 2, 13)); // NOI18N
        labelTexto8.setText("*'SubFase - Intensidade' filtra apenas os jogos daquela subfase e intensidade;");

        javax.swing.GroupLayout panelFiltrosLayout = new javax.swing.GroupLayout(panelFiltros);
        panelFiltros.setLayout(panelFiltrosLayout);
        panelFiltrosLayout.setHorizontalGroup(
            panelFiltrosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelFiltrosLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelFiltrosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(labelJogos)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 370, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(panelFiltrosLayout.createSequentialGroup()
                        .addGroup(panelFiltrosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel2)
                            .addComponent(comboBoxPaciente, javax.swing.GroupLayout.PREFERRED_SIZE, 171, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(panelFiltrosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(comboBoxSubFases, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(labelSubFaseIntensidade))))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(panelFiltrosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(labelTexto2)
                    .addComponent(labelTexto3)
                    .addComponent(labelTexto5)
                    .addComponent(panelRadioButtons, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(labelTexto8))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        panelFiltrosLayout.setVerticalGroup(
            panelFiltrosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelFiltrosLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelFiltrosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(panelFiltrosLayout.createSequentialGroup()
                        .addComponent(panelRadioButtons, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(88, 88, 88)
                        .addComponent(labelTexto5)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(labelTexto2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(labelTexto8)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(labelTexto3)
                        .addGap(0, 111, Short.MAX_VALUE))
                    .addGroup(panelFiltrosLayout.createSequentialGroup()
                        .addGroup(panelFiltrosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(labelSubFaseIntensidade)
                            .addComponent(jLabel2))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(panelFiltrosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(comboBoxSubFases, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(comboBoxPaciente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(13, 13, 13)
                        .addComponent(labelJogos)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
                        .addContainerGap())))
        );

        jTabbedPane1.addTab("Filtros", panelFiltros);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jTabbedPane1)
                    .addComponent(panelTitulo, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(panelBotoes, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(panelTitulo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 427, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelBotoes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void formComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentShown
        // TODO add your handling code here:
        limparCampos();
    }//GEN-LAST:event_formComponentShown

    private void buttonLimparActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonLimparActionPerformed
        // TODO add your handling code here:
        limparCampos();
    }//GEN-LAST:event_buttonLimparActionPerformed

    private void buttonFecharActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonFecharActionPerformed
        // TODO add your handling code here:
        if (super.dlg == null) {
            super.fecharAplicacao();
        } else {
            super.dlg.dispose();
        }
    }//GEN-LAST:event_buttonFecharActionPerformed

    private void buttonSalvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonSalvarActionPerformed
        // TODO add your handling code here:
        boolean tudoCerto = true;

        if(tudoCerto && comboBoxPaciente.getSelectedIndex() <= 0){
            tudoCerto = false;
            JOptionPane.showMessageDialog(null, "Selecione um Paciente.", "Atenção!", JOptionPane.ERROR_MESSAGE);
        }
        
        if (tudoCerto && radioGroupButtonTipoMatrizConfusao.getSelection() == null) {
            tudoCerto = false;
            JOptionPane.showMessageDialog(null, "Selecione um Tipo de Matriz Confusão.", "Atenção!", JOptionPane.ERROR_MESSAGE);
        }

        if(tudoCerto && tableJogos.getSelectedRow() < 0){
            tudoCerto = false;
            JOptionPane.showMessageDialog(null, "Selecione um Jogo.", "Atenção!", JOptionPane.ERROR_MESSAGE);
        }

        if (tudoCerto) {
            String tipoMatrizConfusao = null;
            String idFase = null;
            String idSubFase = null;
            String descricaoSubFaseIntensidade = (String) tableJogos.getValueAt(tableJogos.getSelectedRow(),2);
            String tituloPanel = null;
            String idInstanciaJogo = (String) tableJogos.getValueAt(tableJogos.getSelectedRow(),0);
            
            if (radioButtonExpressoes.isSelected()) {
                tipoMatrizConfusao = "Expressões";
            } else if (radioButtonImagens.isSelected()) {
                tipoMatrizConfusao = "Imagens";
            }

            //Caso esteja selecionado uma SubFaseIntensidade
            if (comboBoxSubFases.getSelectedIndex() != 0) {
                idFase = Long.toString(((ComboBoxMultiData) comboBoxSubFases.getSelectedItem()).getCodigo1());
                idSubFase = Long.toString(((ComboBoxMultiData) comboBoxSubFases.getSelectedItem()).getCodigo2());
            }

            //Lista de panel para controlar os panel gerados dinamicamente
            ArrayList<JPanel> listaPanel = null;

            geraMatrizConfusao(listaPanel, tipoMatrizConfusao, descricaoSubFaseIntensidade, null, null, idFase, idSubFase, tituloPanel, idInstanciaJogo);
        }
    }//GEN-LAST:event_buttonSalvarActionPerformed

    private void comboBoxPacienteItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_comboBoxPacienteItemStateChanged
        // TODO add your handling code here:
        listarJogos();
    }//GEN-LAST:event_comboBoxPacienteItemStateChanged

    private void comboBoxSubFasesItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_comboBoxSubFasesItemStateChanged
        // TODO add your handling code here:
        listarJogos();
    }//GEN-LAST:event_comboBoxSubFasesItemStateChanged

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton buttonFechar;
    private javax.swing.JButton buttonLimpar;
    private javax.swing.JButton buttonSalvar;
    private javax.swing.JComboBox comboBoxPaciente;
    private javax.swing.JComboBox comboBoxSubFases;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JLabel labelCamposObrigatorios;
    private javax.swing.JLabel labelJogos;
    private javax.swing.JLabel labelSubFaseIntensidade;
    private javax.swing.JLabel labelTexto2;
    private javax.swing.JLabel labelTexto3;
    private javax.swing.JLabel labelTexto5;
    private javax.swing.JLabel labelTexto8;
    private javax.swing.JLabel labelTitulo;
    private javax.swing.JPanel panelBotoes;
    private javax.swing.JPanel panelFiltros;
    private javax.swing.JPanel panelRadioButtons;
    private javax.swing.JPanel panelTitulo;
    private javax.swing.JRadioButton radioButtonExpressoes;
    private javax.swing.JRadioButton radioButtonImagens;
    private javax.swing.ButtonGroup radioGroupButtonTipoMatrizConfusao;
    private javax.swing.JTable tableJogos;
    // End of variables declaration//GEN-END:variables

    @Override
    public void limparCampos() {
        Boolean gerouAbas = false;

        if (jTabbedPane1.getTabCount() > 1) {
            gerouAbas = true;
            switch (JOptionPane.showConfirmDialog(null, "Tem certeza que deseja Limpar?\nEste procedimento fechará todas abas que foram geradas.", "Atenção", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null)) {
                case JOptionPane.YES_OPTION:
                    gerouAbas = false;
                    break;
            }
        }
        if (!gerouAbas) {
            Library.limpaTextos(panelFiltros);
            //jTextField.grabFocus();

            radioGroupButtonTipoMatrizConfusao.clearSelection();

            listaPacientes();
            listaSubFases();

            while (jTabbedPane1.getTabCount() > 1) {
                jTabbedPane1.remove(1);
            }
            
            DefaultTableModel tableModel =(DefaultTableModel) tableJogos.getModel();  
            tableModel.setNumRows(0); 
        }
    }

    @Override
    public void mostraDadosObjeto() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    /**
     * Lista registro de Pacientes no ComboBox
     */
    private void listaPacientes() {
        try {
            Pessoas pessoas = new Pessoas();
            pessoas.setPessoas(pessoas.getPessoaDAO().buscaPessoas(null, null, null, "DESCRICAO"));
            pessoas.listarPessoas(comboBoxPaciente);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, VerificaErros.retornaMensagemErro(e), "Erro!", JOptionPane.ERROR_MESSAGE);
        }
    }

    /**
     * Lista registro de Tipos de Profissional no ComboBox
     */
    private void listaSubFases() {
        try {
            SubFases subFases = new SubFases();
            subFases.setSubFases(subFases.getSubFaseDAO().buscaSubFases());
            subFases.listarSubFases(comboBoxSubFases);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, VerificaErros.retornaMensagemErro(e), "Erro!", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void listarJogos(){
        String idPessoa = null;
        String idFase = null;
        String idSubFase = null;
        if(comboBoxPaciente.getSelectedIndex() > 0){
            idPessoa = String.valueOf(((ComboBoxMultiData) comboBoxPaciente.getSelectedItem()).getCodigo1());
        }
        
        if(comboBoxSubFases.getSelectedIndex() > 0){
            idFase = String.valueOf(((ComboBoxMultiData) comboBoxSubFases.getSelectedItem()).getCodigo1());
            idSubFase = String.valueOf(((ComboBoxMultiData) comboBoxSubFases.getSelectedItem()).getCodigo2());
        }
        
        if(idPessoa != null){
            listaJogos(idPessoa, idFase, idSubFase);
        }
    }

    private void listaJogos(String idPessoa, String idFase, String idSubFase){
        try{
            jogos = new Jogos();
            jogos.setJogos(jogos.getJogoDAO().buscaJogos(idPessoa, idFase, idSubFase));
            jogos.listarJogos(tableJogos);
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, VerificaErros.retornaMensagemErro(e), "Erro!", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void geraMatrizConfusao(ArrayList<JPanel> listaPanel, String tipoMatrizConfusao, String descricaoSubFaseIntensidade, String periodoInicial, String periodoFinal, String idFase, String idSubFase, String tituloPanel, String idInstanciaJogo) {
        if (listaPanel == null) {
            listaPanel = new ArrayList<JPanel>();
        }

        FramePanelMatrizConfusao matriz = new FramePanelMatrizConfusao(jTabbedPane1, listaPanel);
        listaPanel.add(matriz);
        matriz.setIndice(listaPanel.size() - 1);
        matriz.escreveDetalhes(jogos.buscaJogo(Long.parseLong(idInstanciaJogo)).toString());

        try {
            int tipoBusca = 2;
            if (radioButtonExpressoes.isSelected()) {
                tipoBusca = 1;
            }
            matriz.getLinhasMatrizConfusao().setLinhasMatrizConfusao(matriz.getLinhasMatrizConfusao().getMatrizConfusaoDAO().matrizConfusaoExpressoes(tipoBusca, null, periodoInicial, periodoFinal, idFase, idSubFase, false, idInstanciaJogo));
            matriz.getLinhasMatrizConfusao().listarLinhasMatrizConfusao(matriz.getTabelaMatrizConfusao(), true);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, VerificaErros.retornaMensagemErro(e), "Erro!", JOptionPane.ERROR_MESSAGE);
        }

        //Preenche labels com os filtros especificados
        tituloPanel = ((ComboBoxMultiData) comboBoxPaciente.getSelectedItem()).toString()+" - "+idInstanciaJogo;
        matriz.getDescricaoMatriz().setText(tipoMatrizConfusao);
        matriz.getDescricaoJogador().setText(tituloPanel);
        matriz.getDescricaoSubFaseIntensidade().setText(descricaoSubFaseIntensidade);

        tituloPanel = tituloPanel + " - " + descricaoSubFaseIntensidade;

        //Adicional o Panel no TabbedPane
        jTabbedPane1.addTab(tituloPanel, matriz);
    }
}
